<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // Array-数组的其他方法

        // 1.find()根据条件查找第一个满足条件的元素;
        // find()和filter()的区别,就是一个返回第一个,另一个返回所有;
        console.log([111, 222, 333, 444].find(item => item % 2 == 0));
        console.log([111, 222, 333, 444].filter(item => item % 2 == 0));

        // 2.findIndex()根据条件查找第一个满足条件的元素的索引值
        console.log([111, 222, 333, 444,].findIndex(item => item % 2 == 0));

        // 3. every() 是否每一项都满足条件;有一项不满足就返回false
        console.log([111, 222, 333, 444,].every(item => item % 2 == 0));

        // 4.some()是否存在一项都满足条件
        console.log([111, 222, 333, 444,].some(item => item % 2 == 0));

        // 5.reduce方法译作,累计器; 多用于求和;
        //   语法类似:map() forEach() filter()

        // 5.1 求简单类型的和
        let arr1 = [111, 222, 333, 444];
        // reduce可以迭代数组,prev的作用是前一项循环之后的返回值;
        let sum = arr1.reduce((prev, item, index) => {
            console.log(prev, item, index);
            // 把当前的prev和item加在一起返回给下一项的prev
            return prev + item
        }, 0)
        console.log(sum);

        // 5.2 求复杂类型的和
        let arr2 = [
            { name: '张三', num: 11 },
            { name: '李四', num: 22 },
            { name: '王五', num: 33 },
        ]
        // 循环遍历
        let sum2 = arr2.reduce((prev, item) => {
            return prev + item.num
        }, 0);
        console.log(sum2);

        // 伪数组可以转换为 真数组.这样就可以调用数组的方法了.

        // 1.Array.from();静态方法
        let divs = document.querySelectorAll('div');
        console.log(divs);
        let arr3 = Array.from(divs);
        console.log(arr1);

        // 2.展开运算符;
        let arr4 = [...divs];
        console.log(arr2);
    </script>
</body>

</html>